1
超越論文
AI008Lecture 2
00:07

跨越『被動閱讀』學術論文與真正工程實力之間的鴻溝,需要深入探討變換器(Transformer)的數學核心。唯有從理論理解轉向實際實現,才能解開高維潛在空間『與生俱來的模糊性』之謎。

1. 擴展的數學原理

現代大語言模型的核心機制是 縮放點積注意力。一個常被理論忽視但極其關鍵的工程細節是 擴展規則

  • 原始注意力分數必須除以鍵維度大小的平方根(dk)。
  • 原因在於: 這可防止點積過度膨脹,否則將使softmax函數進入具有 無窮小梯度的區域,幾乎『扼殺』了模型在反向傳播過程中學習的能力。

2. 從理論到張量運算

工程理解意味著從概念性的迴圈邁向 高度平行化的矩陣乘法

  • 序列注入: 與RNN不同,變換器本身並無順序感。工程師必須手動編碼正弦和餘弦函數(位置編碼)來注入序列資料。
  • 穩定性機制: 實際實現需要策略性地使用 殘差連接層歸一化(LayerNorm) 來抵禦內部協變量偏移,確保訓練過程保持穩定。
工程洞察力
真正的精通來自於『逐行實現』。單純依賴學術文獻,往往會對梯度穩定性和計算效率產生誤解。
Python 實現(PyTorch)
1
import torch
2
import torch.nn as nn
3
import math
4
5
def scaled_dot_product_attention(query, key, value):
6
# Calculate d_k (dimension of keys)
7
d_k = query.size(-1)
8
9
# Calculate raw attention scores
10
# Transitioning from naive loops to matrix multiplication
11
scores = torch.matmul(query, key.transpose(-2, -1))
12
13
# Apply the Scaling Rule to prevent infinitesimal gradients
14
scaled_scores = scores / math.sqrt(d_k)
15
16
# Apply Softmax to get attention weights
17
attention_weights = torch.softmax(scaled_scores, dim=-1)
18
19
# Output is the weighted sum of values
20
return torch.matmul(attention_weights, value)